//基于select选择的Zepto 时间 包装集的插件选择
(function($){
    $.fn.select_time = function(options){
        var opts = $.extend({
            select_title: '',              //select选项值（标题值）
            hidden:'',                     //隐藏表单id值()
            select_text:'.select_text',    //默认为当前select文本值
            fullYear:new Date().getFullYear(), //当前年份
            fullMonth:'01',                  //当前月份默认01
            toDate:false,                    //显示至今(默认不显示)
            select_con:"#select_time",       //追加的那个div内容(默认)
            callback:function(hiddenVal){}   //成功确定以后执行的回调函数
        },options||{}); //合并内容
        //直接指向this
        var othis = this;
        var inpYearVal;
        var inpMonthVal;
        var set_height;
        var excess_height = 25;
        var handler;//设置事件禁止开启参数
        var select_con_width;
        //赋值
        if(othis.find(opts.hidden).val() == '0000-00-00'){
            othis.find(opts.select_text).html('至今');
        }else if(othis.find(opts.hidden).val() !='' && othis.find(opts.hidden).val() !='0'){
            othis.find(opts.select_text).html(othis.find(opts.hidden).val().substr(0,7));
        }
        othis.click(function(){

            //获取年份月份
            var hiddenInp =  (othis.find(opts.hidden).val()) ? othis.find(opts.hidden).val() : '';
            var established = hiddenInp.split('-');
            if(othis.find(opts.hidden).val() == '0000-00-00' && opts.toDate){
                inpYearVal = '0000';
                inpMonthVal = '00';
                $(opts.select_con).find('#toDate').find('a').css({
                    'background':'#00c6c9',
                    'color':'#fff'
                });
            }else if(othis.find(opts.hidden).val() != ''){
                inpYearVal = established[0];
                inpMonthVal = established[1];
                if(opts.toDate){
                    $(opts.select_con).find('#toDate').find('a').css({
                        'background':'#eee',
                        'color':'#888'
                    });
                }
            }else {
                inpYearVal = opts.fullYear;
                inpMonthVal = opts.fullMonth;
                if(opts.toDate){
                    $(opts.select_con).find('#toDate').find('a').css({
                        'background':'#eee',
                        'color':'#888'
                    });
                }
            }
            //判断存在不存在
            if($(opts.select_con).length > 0 ){
                $(opts.select_con).animate({
                    left:'0',
                    'animation':'select_start 0.4s 0s ease',
                    'display':'block'
                }, 400);
            }else{
                loadTime();
                //至今
                if(othis.find(opts.hidden).val() == '0000-00-00' && opts.toDate){
                    $(opts.select_con).find('#toDate').find('a').css({
                        'background':'#00c6c9',
                        'color':'#fff',
                        'display':'block'
                    });
                }else if(opts.toDate){
                    $(opts.select_con).find('#toDate').find('a').show();
                }
                //设置高度
                set_height = $(opts.select_con).height() - $(opts.select_con).find('.select_header').height() -
                    $(opts.select_con).find('.toDate').height() - excess_height;
                $(opts.select_con).find('.time_list').css({
                    'height':set_height + 'px'
                });
                var oneScroll=new IScroll(opts.select_con+" #one",{preventDefault:false });
                var twoScroll=new IScroll(opts.select_con+" #two",{preventDefault:false });

                $(opts.select_con).find('.time_list').find('.one').find('li a').each(function(index){
                    if($(this).attr('data-id') == inpYearVal ){
                        $(this).parent('li').addClass('sel');
                    }
                });
                $(opts.select_con).find('.time_list').find('.two').find('li a').each(function(index){
                    if($(this).attr('data-id') == inpMonthVal ){
                        $(this).parent('li').addClass('sel');
                    }
                });
                //点击年份
                $(opts.select_con).find('.time_list').find('.one').find('li a').each(function(index){
                    $(this).click(function(){
                        //获取年份和文本值
                        inpYearVal = $(this).attr('data-id');
                        $(this).parent('li').addClass('sel').siblings().removeClass('sel');
                    });
                });
                //点击月份
                $(opts.select_con).find('.time_list').find('.two').find('li a').each(function(index){
                    $(this).click(function(){
                        //获取年份和文本值
                        inpMonthVal = $(this).attr('data-id');
                        $(this).parent('li').addClass('sel').siblings().removeClass('sel');
                    });
                });
                //关闭加载层
                $(opts.select_con).find('.close').click(function(){
                    assignment();
                    //设置事件禁止开启参数
                    document.removeEventListener('touchmove',handler,false);
                });
                //确定按钮
                $(opts.select_con).find('#determine').click(function(){
                    if(inpYearVal == '0000' && inpMonthVal == '00'){
                        othis.find(opts.select_text).html('至今');
                    }else{
                        if((inpYearVal == '' || inpYearVal == '0000') && (inpMonthVal != '' && inpMonthVal != '0') ){
                            layerMsg('请选择年份',2);
                            return false;
                        }else if((inpMonthVal == '' || inpMonthVal == '00') && (inpYearVal != '' && inpYearVal != '0') ){
                            layerMsg('请选择月份',2);
                            return false;
                        }
                        othis.find(opts.select_text).html(inpYearVal+'-'+ inpMonthVal);
                    }
                    othis.find(opts.hidden).val(inpYearVal+'-'+ inpMonthVal + '-00');
                    assignment();
                    //执行回调函数
                    opts.callback(inpYearVal+'-'+ inpMonthVal + '-00');
                    //设置事件禁止开启参数
                    document.removeEventListener('touchmove',handler,false);
                });
                //至今按钮
                $(opts.select_con).find('#toDate').find('a').click(function(){
                    assignment();
                    othis.find(opts.select_text).html('至今');
                    othis.find(opts.hidden).val('0000-00-00');
                    $(opts.select_con).find('.time_list').find('.one li').removeClass('sel');
                    $(opts.select_con).find('.time_list').find('.two li').removeClass('sel');
                    //执行回调函数
                    opts.callback('0000-00-00');
                });
            }
            //设置事件禁止开启参数
            handler=function (e) { e.preventDefault();};
            document.addEventListener('touchmove', handler, isPassive() ? {
                capture: false,
                passive: false
            } : false);

            //遮掩层显示
            $(".masking").show();

            //当文档的宽度大于内容的宽度时
            if($(document).width() > $(opts.select_con).width()){
                select_con_width = ( $(document).width() -  $(opts.select_con).width() )/2 ;
                $(opts.select_con).animate({
                    left:select_con_width + 'px',
                    'animation':'select_start 0.4s 0s ease',
                    'display':'block'
                }, 300);
            }else{
                $(opts.select_con).animate({
                    left:'0',
                    'animation':'select_start 0.4s 0s ease',
                    'display':'block'
                }, 300);
            }
        });
        //设置监听滚动
        function isPassive() {
            var supportsPassiveOption = false;
            try {
                addEventListener("test", null, Object.defineProperty({}, 'passive', {
                    get: function () {
                        supportsPassiveOption = true;
                    }
                }));
            } catch(e) {}
            return supportsPassiveOption;
        }
        //加载时间
        function loadTime(){
            var select_con = str_trim(opts.select_con);
            var str = '';
            if($('.masking').length <= 0){
                str+='<div class="masking" id="masking"></div>';
            }
            str+='<div class="select_con" id="'+select_con+'">';
            str+='<div class="select_header">';
            str+='<a class="close"></a>';
            str+='<div class="title">'+opts.select_title+'</div>';
            str+='<a id="determine" class="determine">确定</a>';
            str+='</div>';

            str+='<div class="time_list">';
            str+='<div id="one">';
            str+='<ul class="one">';
            //循环县级市
            for(var i=opts.fullYear;i>=opts.fullYear-60;i--) {
                str += '<li><a data-id="' + i + '"><span>' + i + '年</span></a></li>';
            }
            str+='</ul>';
            str+='</div>';

            str+='<div id="two">';
            str+='<ul class="two">';
                for(var i=1;i<=12;i++) {
                    if(i<10){
                        str += '<li><a data-id="0' + i + '"><span>' + i + '月</span></a></li>';
                    }else{
                        str += '<li><a data-id="' + i + '"><span>' + i + '月</span></a></li>';
                    }
                }
            str+='</ul>';
            str+='</div>';

            str+='<div class="toDate" id="toDate"><a>至今</a></div>';
            str+='</div>';
            str+='</div>';
            //追击添加的内容
            $('body').append(str);
        }
        //点击时间
        //赋值内容
        function assignment(){
            $(opts.select_con).animate({
                'left':'7.5rem',
                'animation':'select_end .4s 0s ease',
                'display':'block'
            }, 300 ,function(){
                $(opts.select_con).hide();
                $(".masking").hide();
            });
        }
        return this;
    };
})(Zepto);

